查看原文
其他

【技术分享】RDS MySQL数据库重构案例简析

拓界科技 南京拓界 2022-12-10


在服务器取证过程中,有时得到的数据库检材难以满足取证分析的要求,此时就需要对提取的数据库文件进行重构。本期小拓将基于服务器取证的实际案例,阐述RDS MySQL数据库重构过程中需要解决的操作系统版本不一、数据库压缩格式多样、数据表内容缺失和表字段加密等问题,希望对相关人员的电子取证分析工作有所帮助。



01  数据库检材说明  


在电子数据取证案件中,经常需要对服务器进行固定取证。具体而言,通常可以分为两种情况:一是网站源码和数据库在同一台服务器上的情况,二是网站源码和数据库不在同一台服务器上的情况(也就是常说的站库分离)。

本案例中的检材为从腾讯RDS MySQL云数据库服务器备份下来的压缩文件。RDS MySQL是一种云关系型数据库,可以提供稳定可靠、弹性可伸缩的在线数据库服务,支持 MySQL引擎,并且提供了包括容灾、备份、恢复、监控、迁移等功能在内的全套解决方案。目前,国内外主要云服务商均提供云数据库RDS MySQL版服务,RDS将常用的数据库操作集成为一个面板,以便使用者查看与操作。RDS MySQL备份文件主要有四种格式:.tar压缩包、XtraBackup压缩包、XtraBackup文件包和XtraBackup qpress压缩包。本案例中的检材格式为XtraBackup压缩包,以.xb结尾。本案例中RDS的备份情况如图1所示。

图1 本案例中RDS的备份情况



02  数据库重构环境 

在开始进行数据库重构之前,需要搭建必要的重构环境,其中包含了操作系统环境与重构工具。基于本案例中的检材, 重构环境配置简要说明如下:主机采用Windows系统,安装了MySQL5.7/5.6和Navicat工具;使用CentOS 8虚拟机,搭载XtraBackup、qpress和dbsake工具。

      2.1 环境配置      

1. CentOS 8配置

CentOS 8为常用的Linux版本,CentOS 8虚拟机的具体安装搭建过程在此不再赘述。由于CentOS官方源问题,CentOS 8系统安装后自带的源并不含XtraBackup包。因此,需提前换源并配置DNS,具体操作如下:

在安装XtraBackup之前,需要先安装XtraBackup存储库、工具存储库及XtraBackup的相关依赖,从而保证使用XtraBackup时不会报错。具体按照步骤说明如下:

2. Windows主机环境配置在Windows下安装MySQL:下载最新的PHP小皮面版进行安装,自带MySQL数据库,如图2所示。图2 MySQL数据库安装界面

使用Navicat连接MySQL:

点击“连接”->“MySQL”,弹出如图3所示的数据库连接界面,填入账号密码即可连接成功。

图3 MySQL数据库连接界面      2.2 将检材放入Linux虚拟机中      

在Windows下打开cmd,执行如下代码(参看图4):

图4 CMD下的操作命令情况



03  数据库重构过程 
      3.1 解压.xb文件      

图5 加载数据库后点击数据表

最常见的MySQL引擎包括MyISAM和InnoDB,MyISAM是MySQL 5.5.8版本之前的默认引擎, 在MySQL 5.5.8以后的默认存储引擎是InnoDB。在对数据库进行重构时,MyISAM是可以直接复制使用的,但InnoDB不行,需要进行表结构与表数据的修复。

InnoDB存储文件有frm、ibd,而MyISAM包括frm、MYD、MYI。对于InnoDB,frm是表定义文件,ibd是数据文件;对于MyISAM,frm是表定义文件,MYD是数据文件,MYI是索引文件。

根据.ibd和.frm后缀,得知.xb备份压缩文件的原数据库为InnoDB引擎。由于InnoDB引擎的特殊性,数据表不可直接复制粘贴,而是需要修复才能查看数据表的结构与内容。

     3.2 修复数据表     

在此以单个数据库的修复操作为例。图6中,test1、mysql、zp分别代表数据库文件夹,下面以修复test1数据库为例进行说明。

图6 数据库文件显示情况

1.  修复表结构

返回到CentOS虚拟机中,将.frm转换为.sql执行文件:./dbsake  frmdump ./*.frm >> 12.sql,得到12.sql文件,结果如图7所示。

图7 文件转换操作结果

拷贝CentOS虚拟机中的test1文件夹到Windows桌面:scp -r root@192.168.3.170:/root/data/test1/ C:\Users\0101\Desktop\。使用navicat执行12.sql文件生成数据表结构:右击“127.0.0.1(数据库服务器)”->“新建查询”,将12.sql内容复制过来,选择要恢复到test2数据库中,最后点击运行。表结构恢复成功,如图8所示。

图8 恢复成功的表结构

2  修复表数据

需要清理表创建时的产生的.ibd文件,再将源.ibd复制到对应目录下,进行加载,即可完成修复。具体操作步骤如下:

相关代码如图9所示。图9 修复表数据的相关代码

修复表数据之后,可以查看数据表内容,如图10所示。至此,数据库修复成功。

图10 查看修复的表数据内容



04   数据库解密   

获取重构的数据库后,发现表中的phone列是加密的,如图11所示。

图11 数据库中加密的phone列

从获得的检材中,发现还有一份关于加密方式的代码文件,从而获悉phone字段的加密方式。由于加密代码涉及隐私,不便展示。因此仅对加密方式进行简要说明:加密代码使用一串特定的字符(以下称为密钥),在网站用户输入一串手机号码后,该代码进行格式转化,然后与密钥进行异或运算,最后得到加密字符串。由此可知,只需将加密后的字符串与密钥进行异或操作,再进行格式转化即可得到解密后的手机号码,具体运算过程如图12所示。

图12 数据库解密运算过程   结 语   

本期小拓基于电子取证分析的实际案例,较为详细说明了RDS MySQL数据库文件的重构过程。归纳而言,数据库重构过程的一般步骤如下:首先,要充分了解数据库检材文件;然后,分析处理该类型数据库文件应采用的方法及所需工具;接下来,对检材重构所需环境及工具进行安装部署;再对检材进行解压和修复;最后,对数据库中的加密字段进行解密。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存